package com.digitalchina.lxnsy.toolkit.statusbar;

import java.util.regex.Pattern;

import static com.digitalchina.lxnsy.constant.Constant.REGEX_CAR_NO;
import static com.digitalchina.lxnsy.constant.Constant.REGEX_MOBILE_EXACT;
import static com.digitalchina.lxnsy.constant.Constant.REGEX_MOBILE_SIMPLE;
import static com.digitalchina.lxnsy.constant.Constant.REGEX_TEL;

/**
 * ================================================
 * 项目名称：bigdata
 * 类描述：正则相关类
 * 包名：com.digitalchina.bigdata.toolkit.statusbar
 * 创建人：白彦东
 * 创建时间：2016/11/25 17:13
 * 修改备注：
 * ================================================
 */

public class RegexUtils {

    private RegexUtils() {
        throw new UnsupportedOperationException("u can't instantiate me...");
    }

    /**
     * If u want more please visit http://toutiao.com/i6231678548520731137/
     */

    /**
     * 验证手机号（简单）
     *
     * @param input 待验证文本
     * @return {@code true}: 匹配<br>{@code false}: 不匹配
     */
    public static boolean isMobileSimple(CharSequence input) {
        return isMatch(REGEX_MOBILE_SIMPLE, input);
    }

    /**
     * 验证手机号（精确）
     *
     * @param input 待验证文本
     * @return {@code true}: 匹配 {@code false}: 不匹配
     */
    public static boolean isMobileExact(CharSequence input) {
        return isMatch(REGEX_MOBILE_EXACT, input);
    }

    /**
     * 验证电话号码
     *
     * @param input 待验证文本
     * @return {@code true}: 匹配<br>{@code false}: 不匹配
     */
    public static boolean isTel(CharSequence input) {
        return isMatch(REGEX_TEL, input);
    }

    /**
     *
     * @param input 待验证文本
     * @return
     */
    public static boolean isCarNO(String input) {
        /*
         车牌号格式：汉字 + A-Z + 5位A-Z或0-9
        （只包括了普通车牌号，教练车和部分部队车等车牌号不包括在内）
         */
        return isMatch(REGEX_CAR_NO, input);
    }

    /**
     * 判断是否匹配正则
     *
     * @param regex 正则表达式
     * @param input 要匹配的字符串
     * @return {@code true}: 匹配<br>{@code false}: 不匹配
     */
    public static boolean isMatch(String regex, CharSequence input) {
        return input != null && input.length() > 0 && Pattern.matches(regex, input);
    }
}
